Method and apparatus for minimizing application delay by pushing application notifications

ABSTRACT

A method for minimizing application initialization delay comprising sending, from a privileged application executing on a mobile device, a registration message to a server, receiving, at the privileged application, a response message from the server, extracting, from the response message, application information and notifying the mobile device of the application information.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 13/901,224, filed May 23, 2013, which is incorporated herein byreference in its entirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

Embodiments of the present invention generally relate to a voice overinternet protocol (VoIP) service, and more specifically, to a method andapparatus for minimizing application initialization delay by pushingapplication notifications.

2. Description of the Related Art

When an application moves from the background to the foreground of amobile device, i.e., the application goes from being unused to beingused by a user of the mobile device, the application may need to sendone or more requests to one or more servers. For example, applications,i.e., mobile applications, may check for configuration changes, updates,whether a user account is still active, updating a contacts list,changes to licensing agreements, change to fees and charges, or thelike. These application requests create a delay wherein the user of themobile device cannot fully use the application while the requests arepending. Typically, the application will send an application programminginterface (API) request for each check and the application will blockother actions while waiting for a response, causing considerable delayperceptible by the user.

Therefore, there is a need in the art for a method and apparatus forreducing application update delay when moving the application to theforeground of a device in accordance with exemplary embodiments of thepresent invention.

SUMMARY OF THE INVENTION

Embodiments of the present invention relate to a method and apparatusfor minimizing application initialization delay comprising sending, froma privileged application executing on a mobile device, a registrationmessage to a server, receiving, at the privileged application, aresponse message from the server, extracting, from the response message,application information and notifying the mobile device of theapplication information.

Further embodiments of the present invention relate to a method forproviding update information in a response message comprising receiving,at a registration service, a registration message from a mobile device,communicating with one or more third party services to determine ifapplication information is updated for applications on the mobile deviceand forming a response message and appending the application informationto the response message.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited features of the presentinvention can be understood in detail, a more particular description ofthe invention, briefly summarized above, may be had by reference toembodiments, some of which are illustrated in the appended drawings. Itis to be noted, however, that the appended drawings illustrate onlytypical embodiments of this invention and are therefore not to beconsidered limiting of its scope, for the invention may admit to otherequally effective embodiments.

FIG. 1 depicts a device communicating with a registration service inaccordance with at least one embodiment of the present invention;

FIG. 2 depicts a flow diagram for a method for minimizing mobileapplication initialization delay in accordance with previous embodimentof the present invention as depicted in FIG. 1; and

FIG. 3 depicts a flow diagram for a method for appending a registrationmethod in accordance with previous embodiment of the present inventionas depicted in FIG. 1.

DETAILED DESCRIPTION

Embodiments of the present invention generally relate to a method forminimizing delay in mobile application initialization. According to oneembodiment, an application with special privileges is stored in thememory of a mobile device. The operating system of the mobile deviceallows the privileged application to execute as a background process,and provides the privileged application with one or more handlers forhandling incoming communication and a timer for periodically sendingnotifications to an external server while a non-privileged applicationmay not execute as a background process and cannot perform any activityduring hibernation. According to this embodiment, the privilegedapplication periodically sends a registration message to a remote serverand receives a response.

According to the present invention, the privileged application may alsoembed a request for updated data on behalf of non-privilegedapplications and receive an embedded update in the response message fromthe server to avoid an extraneous round-trip communication with a serverfrom the non-privileged application as the non-privileged application isbrought to the foreground. The privileged application extractsapplication notification information from the response and stores theinformation in a shared data store of the mobile device. Accordingly,non-privileged applications executing on the mobile device canselectively choose which updates to request from an external serverbased on the application notification information when they are broughtto the foreground, minimizing the delay required after it is brought tothe foreground.

FIG. 1 depicts a device 100 communicating with a registration service130 in accordance with at least one embodiment of the present invention.The device 100 includes a processor 102, various support circuits 106,and memory 103. The processor 102 may include one or moremicroprocessors known in the art. The support circuits 106 for theprocessor 102 include conventional cache, power supplies, clockcircuits, data registers, I/O interface 107, and the like. The I/Ointerface 107 may be directly coupled to the memory 103 or coupledthrough the support circuits 106. The I/O interface 107 may also beconfigured for communication with input devices and/or output devicessuch as network devices, various storage devices, mouse, keyboard,display, video and audio sensors, IMU and the like.

The memory 103, or computer readable medium, stores non-transientprocessor-executable instructions and/or data that may be executed byand/or used by the processor 102. These processor-executableinstructions may comprise firmware, software, and the like, or somecombination thereof. Modules having processor-executable instructionsthat are stored in the memory 103 comprise one or more privilegedapplication 104, and applications 110, comprising one or moreapplications 1 . . . N. The device 100 may be programmed with one ormore operating systems 120, which may include OS/2, Java VirtualMachine, Linux, SOLARIS, UNIX, HPUX, AIX, WINDOWS, IOS, and ANDROIDamong other known platforms.

The memory 103 and the memory 103 may include one or more of thefollowing random access memory, read only memory, magneto-resistiveread/write memory, optical read/write memory, cache memory, magneticread/write memory, and the like, as well as signal-bearing media asdescribed below.

The operating system 120 gives special privileges to a privilegedapplication. For example, in APPLE IOS, only privileged applications,for example, voice over internet protocol (VoIP) applications, mayexecute as background processes allowing the privileged applications toperform tasks in the background, while another application is in theforeground. For example, if a user of the device 100 initially executesthe VoIP application on device 100, the VoIP application will be in theforeground. However, when the user switches back to a home screen of thedevice 100, the device 100 places the VoIP application in thebackground, with privileged access.

Conversely, if the user initially executed a non-privileged applicationon device 100, such as a game (i.e., application 1), and subsequentlyswitches back to the home screen, the operating system 120 of the device100 will cause the game to hibernate. In hibernation state, the gamecannot perform any background tasks such as checking an external serverfor game updates, score updates, contact updates or the like. However,when the user launches the game again, the operating system 120 of thedevice 100 will release the game from hibernation state and execute thegame as a foreground process.

The privileged application 104 handles incoming communications even as abackground process. The privileged application 104 may be programmed tosend local notifications for alerting the user of the device 100, orhandle notification information and go back to a suspended state,waiting for incoming communication. Alternatively, the privilegedapplication 104 may execute a periodic communication to an externalserver through the client registration service 106. For example, if theprivileged application 104 is a VoIP application, the VoIP applicationwill send a registration message to a VoIP server through network 101,to registration service 130. According to some embodiments of thepresent invention, the registration message is a Session InitiationProtocol (SIP) REGISTER message, comprising information related to theinternet protocol (IP) address of the device 100.

The registration service 130 is a remote service executing on a server,such as a VoIP server. The registration service 130 receives theregistration message indicating the location of the device 100 and sendsa response in return through the network 101 back to the device 100through the I/O interface 107. According to exemplary embodiments of thepresent application, the update module 132 of the registration service130 may also retrieve updates from third party service 150, third partyservice 152 and third party service 154, on behalf of applications 1 . .. N stored in device 100. Accordingly, the applications 1 . . . N willnot have to contact remote servers to retrieve update information. Insome embodiments, the update module 132 only includes flags indicatingthat a change has occurred. The applications 1 . . . N then may onlymake server requests corresponding to the flagged updates and do notperform server requests on items which are not flagged.

According to some embodiments, the updates may include checking for newconfiguration parameters, missed calls, system message waiting,determining whether a user or account is still active with the thirdparty service, updating a contact list, changes to licensing or service,changes to the privacy policy, modifications to service rates, or thelike. The update module 132 subsequently inserts proprietary headersinto the server response from the registration service 130. According toexemplary embodiments, the server response is a 200 OK SIP response, andthe update module 132 appends headers to the response corresponding tothe application notification flags.

The I/O interface 107 couples the response to the client registrationservice 106 of the privileged application 104. The notification service108 of the privileged application 104 extracts the headers from theresponse and extracts and application notification flags indicatingwhich updates should be requested by any third party applications. Oncethe flags are extracted by the notification service 108, the privilegedapplication 104 goes into a suspended state, and, as described above,will be woken periodically to perform registration and to acquire anynew application flags.

For example, if the user launches the game application (application 1)once more, the game application requests a list of updated applicationflags relating to the game application from the operating system 120. Ifthe notification service 108 retrieved any update flags from theregistration service 130, the notification service 108 will store thoseflags in memory 103 of the device 100. According to one embodiment, thenotification service 108 stores the application information in a shareddata store of a device. According to one embodiment, whenever anapplication is launched, the notification service 108 intercepts serverrequests and only permits those service requests for which flags havebeen saved in memory 103.

According to another embodiment, the application from applications 1 . .. N determines on launch which server update request to perform based onthe application flags stored in memory 103. According to yet anotherembodiment, the application flags contain the updated information, andthe application 1, for example, retrieves the information from thememory 103 of device 100, instead of sending a request to a remoteserver. The application 1 may then launch, or move to the foreground ofdevice 100, and allow the user to use the application 1 without anupdate delay.

According to an alternate embodiment, the notification service 108 maywrite the application flag data to shared data area of the device 100.For example, the notification service 108 may write data to a dummycontact, or a calendar entry, named “Application 1”. Application 1 ofthe applications 110 will be programmed to access the “Application 1”contact, for example, to access its application flags, or its updateddata. Application 2 will similarly extract the update data from theapplication information from contact “Application 2”. According toembodiments of the present invention, the data may be shared withapplications 110 by writing the data to any shared data store in memory103, such as e-mail, text message or the like as understood by those ofordinary skill in the art.

FIG. 2 depicts a flow diagram for a method 200 for minimizing mobileapplication initialization delay in accordance with previous embodimentof the present invention as depicted in FIG. 1. The method 200 is anexemplary implementation of the privileged application 104.

The method 200 begins at step 202 and proceeds to step 204. At step 204,a privileged application 104 executing on a device 100, such as a mobilephone, tablet or the like, uses client registration service 104 to senda register message to the registration service 130 through network 101.The privileged application 104 may be a VoIP application and the clientregistration service 106 may be a component of the VoIP application, ormay be implemented as a separate service and stored in memory 103. Theregistration message may be a SIP REGISTER message used in VoIPapplications, or may be any message that is periodically sent to aserver. The privileged application 104 sends the registration messageduring the periodic timer assigned to privileged applications by theoperating system 120, while the privileged application 104 is executingas a background process.

The method proceeds to step 206, where the client registration service106 receives a response from the registration service 130. According tosome embodiments, the response is an SIP 200 “OK” response to theregistration message; though one of ordinary skill would recognize thatany other response messages may be used.

The method then proceeds to step 208, where the notification service 108extracts application information from the response received from theregistration service 130. The application information may indicate whichapplications need to initiate an update, or may indicate a portion ofupdates that a particular application has to update.

According to some embodiments, updated application content may beembedded along with the application flags. For example, a third partyservice may, in one instance, provide a flag indicating that applicationconfiguration information such as a server address has changed.According to another instance, the third party service may send theregistration service 130 the server address instead of the flag, therebyobviating the need for an application to request the new server address.

The method 200 then proceeds to step 210. At step 210, the notificationservice 108 notifies the mobile device 100 via the operating system 120.According to exemplary embodiments, the notification service 108 sends amessage to the operating system 120 according to the norms of theoperating system 120. In other instances, the notification service 108may create or update contacts, calendar entries, emails, or the like,each associated with a particular Application of application 110 withthe flag information.

For example, Application 1 may only check the contacts for a contactnamed “Application 1” for any application flags. When the user of device100 brings Application 1 into the foreground, i.e. launches Application1, or switches to Application 1, Application 1 initially checks thecontact named “Application 1” to determine which parameters ofApplication 1 need to be updated. In contact “Application 1”, threeapplication flags are listed: “update configuration”, “update scoreserver to NEWSERVERADDRESS” and “subscription has changed”.

Application 1 will only request the updated configuration, the new scoreserver address and the user's subscription level, instead of requestingall updates which Application 1 would normally request, therebyminimizing the initialization delay of Application 1. The user is ableto use Application 1 quickly after the user launches Application 1without sensing a delay before the user interface reacts to the user'sinput. Subsequently, the method terminates at step 212.

FIG. 3 depicts a flow diagram for a method 300 for appending aregistration method in accordance with previous embodiment of thepresent invention as depicted in FIG. 1. The method 300 is an exemplaryimplementation of the registration service 130.

The method 300 begins at step 302 and proceeds to step 304. At step 304,the registration service 130 receives a registration message from adevice. According to exemplary embodiments, the device may be a VoIPdevice, and the registration message may be a SIP REGISTER message fromthe VoIP device. In other instances, the registration message may be anyform of messaging sent to a server for registering location. Theregistration message may be an HTTP request or the like, as known tothose of ordinary skill in the art. The device may be a non-VoIP devicesuch as a mobile phone, executing a VoIP application.

The method then proceeds to step 306, where the update module 132 of theregistration service 130 waits for an update from one or more thirdparty services to determine if there is any application informationavailable to update. For example, one or more of the third partyservices (for example, GOOGLE contacts) may notify the update module 132that updated contact information is available. If the service hasupdated data, then according to one embodiment, the update module 132will set a flag indicating that contact data is updated. According toanother embodiment, the update module 132 will receive the updatedcontact data.

At step 308, the registration service 130 forms a response message andappends the application information, e.g., the contact flag, to aresponse to the registration message. According to some embodiments, theresponse is any SIP response, for example, an SIP 200 “OK” response. Insome embodiments, the flag information is embedded into additionalheaders in the response message. According to other embodiments, theupdate data is embedded into the headers of the response message

The method proceeds to step 310, where the registration service 130sends the formed response to the device of origination. The method thenterminates at step 312.

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

1. A method for providing update information in a response message,comprising: receiving, at a registration service, a registration messagefrom a device; receiving application information updates from one ormore third party services related to applications on the device; forminga response message comprising at least the application information; andsending the formed response message to the device.
 2. The method ofclaim 1, wherein the application information is embedded into one ormore headers of the response message.
 3. The method of claim 1, whereinthe formed response message to the registration message is an SessionInitiation Protocol (SIP) 200 “OK” message.
 4. The method of claim 1,wherein the registration service is a VoIP registration service, andwherein the registration message is a Session Initiation Protocol (SIP)REGISTER message.
 5. The method of claim 4, wherein the formed responsemessage to the registration message is an SIP 200 “OK” message.
 6. Themethod of claim 5, wherein the application information is embedded intoone or more headers of the SIP 200 “OK” message.
 7. The method of claim1, further comprising: embedding application flag information into theresponse message, wherein the application flag information comprisesflags indicating application information to be updated.
 8. The method ofclaim 1, further comprising: embedding application update informationinto the response message, wherein the application update informationcomprises updated content from the one or more third party services. 9.An apparatus for providing update information in a response message,comprising: a registration service configured to: receive a registrationmessage from a device; receive application information updates from oneor more third party services related to applications on the device; forma response message comprising at least the application information; andsend the formed response message to the device.
 10. The apparatus ofclaim 9, wherein the registration service is further configured to embedthe application information into one or more headers of the responsemessage.
 11. The apparatus of claim 9, wherein the registration serviceis a VoIP registration service, and wherein the registration message isa Session Initiation Protocol (SIP) REGISTER message.
 12. The apparatusof claim 11, wherein the registration service is further configured tosend a SIP 200 “OK” message as the response message to the registrationmessage.
 13. The apparatus of claim 12, wherein the registration serviceis further configured to embed the application information into one ormore headers of the response message.
 14. The apparatus of claim 9,wherein the registration service is further configured to send a SIP 200“OK” message as the response message to the registration message. 15.The apparatus of claim 9, wherein the registration service is furtherconfigured to embed application flag information into the responsemessage, and wherein the application flag information comprises flagsindicating application information to be updated.
 16. The apparatus ofclaim 9, wherein the registration service is further configured to embedapplication update information into the response message, wherein theapplication update information comprises updated content from the one ormore third party services.